import numpy as np


# 均方误差
def mean_squared_error(y, t):
    # y是预测出的结果，矩阵。
    # t是标准的结果，矩阵
    return 0.5 * np.sum((y - t) ** 2)


def cross_entropy_error(y, t):
    '''
    交叉熵误差
    :param y: 预测的结果
    :param t:独热编码，一个向量里只有一个是1。
    :return: 交叉熵，越小说明预测的越准
    '''
    delta = 1e-7  # 加上它是为了避免 y是0的情况。delta 是一个极小的量。
    return -np.sum(t * np.log(y + delta))


if __name__ == '__main__':
    t = [0, 0, 0, 0, 1, 0, 0, 0, 0, 0]
    y = [0.1, 0.05, 0.6, 0.0, 0.05, 0.1, 0.0, 0.1, 0.0, 0.0]
    c = mean_squared_error(np.array(y), np.array(t))
    batch_size = 5
    R = [2, 7, 0, 9, 4]
    d = [np.arange(batch_size), R]
